package main

import (
	"fmt"
)

type S struct {
	M
}

type M struct {
	int
}

func (t M) testM() {
	fmt.Println("如类型 S 包含匿名字段 M，则 S 和 *S 方法集包含 M 方法。")
}

// 如类型 S 包含匿名字段 T，则 S 和 `*S` 方法集包含 T 方法。
func main() {
	s1 := S{M{1}}
	s2 := &s1
	fmt.Printf("s1 is : %v\n", s1) // s1 is : {{1}}
	s1.testM()                     // 如类型 S 包含匿名字段 M，则 S 和 *S 方法集包含 M 方法。
	fmt.Printf("s2 is : %v\n", s2) // s2 is : &{{1}}
	s2.testM()                     // 如类型 S 包含匿名字段 M，则 S 和 *S 方法集包含 M 方法。
}
